// 配置基地址
const baseURl = 'http://127.0.0.1:80'; // 本地服务器

function request({
  url = '',
  method = 'GET',
  header = { "content-type": "application/json" },
  data = {},
  params = {} // 新增 params 参数，用于 GET 请求的查询参数
}) {
  return new Promise((resolve, reject) => {
    wx.showLoading({
      title: '加载中...'
    });

    let fullUrl = baseURl + url;

    // 如果是 GET 请求，将 params 拼接到 URL 中
    if (method.toUpperCase() === 'GET' && Object.keys(params).length > 0) {
      const queryParams = Object.keys(params)
        .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
        .join('&');
      fullUrl += `?${queryParams}`;
    }
    // 如果是 DELETE 请求，同样需要拼接参数到 URL 上
    if (method.toUpperCase() === 'DELETE' && Object.keys(params).length > 0) {
      const queryParams = Object.keys(params)
        .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
        .join('&');
      fullUrl += `?${queryParams}`;
    }

    wx.request({
      url: fullUrl,
      method: method,
      data: (method.toUpperCase() !== 'GET' && method.toUpperCase() !== 'DELETE') ? data : {},
      header: header,
      timeout: 5000,
      // 成功回调
      success: res => {
        wx.hideLoading();
        resolve(res.data);
      },
      // 错误回调
      fail: err => {
        wx.hideLoading();

        wx.showToast({
          title: '网络错误！',
          icon: 'error',
          duration: 2000
        });
        reject(err);

        console.log('错误:', err);
      },
      // 请求完成回调
      complete: () => {
        // 可选：在此处执行一些清理逻辑
      }
    });
  });
}

export default request;